blockToChar : IF (blocks[0].blockStart.line < 0) OR (blocks[0].blockEnd.line < 0) OR (blocks[0].blockEnd.line < blocks[0].blockStart.line) THEN RETURN END;
(* alten Undobuffer freigeben, wird nicht mehr gebraucht! *)
freeUndoBuffer ();
(* Blockmarken merken *)
oldStart := blocks[0].blockStart;
oldEnd := blocks[0].blockEnd;
(* gesamten Block duplizieren *)
IF blocks[0].blockEnd.line >= totalLineNr-1
THEN
blEnd := blocks[0].blockEnd.line;
atEndOfText := TRUE;
ELSE
blEnd := blocks[0].blockEnd.line + 1;
atEndOfText := FALSE;
END;
IF ~EditBase.CopyToBuff (ed, blocks[0].blockStart.line, blEnd, buffer, bufSize)
THEN
whatToUndo := nothingToDo;
freeUndoBuffer();
RETURN
END;
(* Cursorposition restaurieren *)
|
normalPaste : (* erstmal alten buffer freigeben, wird nicht mehr gebraucht
*)
freeUndoBuffer ();
(* Kann ich nicht so leicht machen, bessere Idee gehabt:
* nachher noch einen Aufruf mit den entsprechenden Werten in den BlockMarken
* Die sollten sowieso drin sein, da die auch bei blockPaste drinstehen mssen.
*)
(* Ich mu mir nur die aktuelle Zeile merken, falls die gesplittet wird *)
(* currLine merken und undoBuffer darauf setzen! *)
IF undoLine.text # NIL THEN DEALLOCATE (undoLine.text, 0) END;